﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CompositionPlugin.Service
{
    public interface IImportedPluginManager : IRuntimeService
    {
        ImportedPlugin<T> GetPlugin<T>(object instance, ImportedPluginContractMetadata metadata);

        ImportedPlugin<T, TMetadata> GetPlugin<T, TMetadata>(object instance, ImportedPluginContractMetadata metadata);

        IEnumerable<ImportedPlugin<T>> GetPlugins<T>(object instance, ImportedPluginContractMetadata metadata);

        IEnumerable<ImportedPlugin<T, TMetadata>> GetPlugins<T, TMetadata>(object instance, ImportedPluginContractMetadata metadata);

        event EventHandler<UndeterminedImportedPluginEventArgs> UndetermindImportedPlugin;
    }
}
